11192. Групповое обращение
Групповым обращением строки называется следующая процедура:
строка разбивается на равные по величине группы символов, после чего каждая
группа обращается. Зная количество групп в строке, необходимо найти ее
обращение.
Вход. Содержит
не более 101 теста. Каждый тест содержит количество групп g (g < 10) в строке и
саму строку. Строка содержит не более 100 символов, ее длина кратна g. Строка может содержать только буквы и
цифры. Последняя строка содержит 0 и не обрабатывается.
Выход. Для каждой входной строки вывести
ее групповое обращение.
3 ABCEHSHSH
5 FA0ETASINAHGRI0NATWON0QA0NARI0
0
CBASHEHSH
ATE0AFGHANISTAN0IRAQ0NOW0IRAN0
обработка строк
Каждую входную строку s следует разбить на группы по strlen(s) / g
символов. Далее обернуть каждую группу символов при помощи функции reverse.
Входную строку храним в
символьном массиве s.
char s[101];
Читаем входные данные до тех пор,
пока после g следует строка s. Если после g строки s нет, то gets(s) возвращает 0 и происходит выход из
цикла while. Положим g равным
количеству символов в группе.
while(scanf("%d
",&g),gets(s))
{
g = strlen(s) / g;
В цикле обращаем каждую группу
символов. Результирующую строку выводим на печать.
for(i = 0; i < strlen(s); i += g)
reverse(s+i,s+i+g);
printf("%s\n",s);
}
Чтение входных данных можно было
бы совершить, используя только функцию scanf.
В переменную g читается число
групп, в строку s читается последовательность
символов, пока не встретится символ перевода строки (‘\n’). Цикл продолжается
пока g не равно 0.
while(scanf("%d
%[^\n]",&g,s),g)
{
. . .
}